package com.sunducation.wts.room.bean

import androidx.room.*

/**
 *https://developer.android.google.cn/training/data-storage/room/relationships
 * 官网数据最详细
 * tableName 重新定义表名，默认跟类名相同
 * PrimaryKey 设置主键 autoGenerate 自动增加
 * ColumnInfo 重新定义列名，默认为字段名， defaultValue设置默认值
 * Ignore 表示不作为列名
 * 表名和字段名都不区分大小写
 * String? 是否可以为null
 * indices 添加索引
 * unique 唯一性
 * 好像没有非空约束，直接用kotlin特性，也可以尝试一下@PrimaryKey
 * 一对多的关系，方法一，子表包含父表的id，方法二，加ForeignKey约束，方法三，加Relation约束(推荐)
 * */
@Entity(tableName = "table_user", indices = arrayOf(Index(value = arrayOf("userId"), unique = true)))
data class User(@PrimaryKey(autoGenerate = true) var userId: Long?,
                @ColumnInfo(name = "first_name") var fName: String = "",
                var lastName: String = "",
                @ColumnInfo(defaultValue = "china") var address: String?,
                //内嵌类
                @Embedded var address2: Address?,
                //内嵌类，加前缀
                @Embedded(prefix = "three_") var address3: Address?
                ) {
    @Ignore var sex: Boolean = false


}